// 面试题 02.07. 链表相交

// 给你两个单链表的头节点 headA 和 headB ，请你找出并返回两个单链表相交的起始节点。
// 如果两个链表没有交点，返回 null 。

#include <stdio.h>

struct ListNode
{
    int val;
    struct ListNode *next;
};

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB)
{
    if (!headA || !headB)
        return NULL;

    struct ListNode *h1 = headA;
    struct ListNode *h2 = headB;

    while (h1 != h2)
    {
        if (h1 == NULL)
            h1 = headB;
        else
            h1 = h1->next;

        if (h2 == NULL)
            h2 = headA;
        else
            h2 = h2->next;
    }

    return h1;
}